import sys
import os
import json
import datetime
import time
from enum import Enum
from utils import sign, read_cookie_from_file
from xhs import XhsClient, DataFetchError

class SearchSortType(Enum):
    """search sort type"""

    # default
    GENERAL = "general"
    # most popular
    MOST_POPULAR = "popularity_descending"
    # Latest
    LATEST = "time_descending"

def save_data_to_keyword_directory(keyword, data):
    # 创建以关键字命名的目录
    directory = os.path.join(os.getcwd(), keyword)
    os.makedirs(directory, exist_ok=True)

    # 将数据保存到关键字目录中的data.json文件
    file_path = os.path.join(directory, 'data.json')
    with open(file_path, 'w', encoding='utf-8') as f:
        json.dump(data, f, ensure_ascii=False, indent=4)
        print(f"数据已成功保存到 {file_path} 文件中。")


def fetch_all_notes(keyword, max_pages=None, page_size=10):
    page = 1
    all_notes = []
    cookie = read_cookie_from_file()
    xhs_client = XhsClient(cookie, sign=sign)
    # response = xhs_client.get_note_by_keyword(keyword)
    # print('-------------------------------',response.get('items'))
    while True:
        try:
            time.sleep(1)
            response = xhs_client.get_note_by_keyword(keyword, sort=SearchSortType.MOST_POPULAR)
            print('-------------------------------',response.get('items'))
            notes = response.get('items', [])  # 从响应中提取出 items
            print(notes)
            if not notes:  # 假设空列表表示没有更多数据
                break
            # print('------',notes)
            all_notes.extend(notes)  # 将 items 拼接到 all_notes
            page += 1  # 移动到下一页
            if max_pages is not None and page > max_pages:
              break  # 如果设置了最大页数，则在达到后停止
        except DataFetchError as e:
            print(f"在获取第{page}页数据时发生错误: {e}")
            # 您可以根据需要添加重试逻辑，但在这个例子中，我们简单地跳出循环
            # 如果您想要重试，可以添加额外的逻辑来增加重试次数并可能暂停一段时间
            break  # 在这里我们选择在出错时停止，但您可以调整它

    return all_notes


def run_file1(keyword):
    all_notes = fetch_all_notes(keyword, max_pages=1)
    # print('=================================================', all_notes)
    save_data_to_keyword_directory(keyword, all_notes)

if __name__ == '__main__':
    if len(sys.argv) > 1:
        keyword = sys.argv[1]  # 从命令行获取关键字
    else:
        keyword = input("请输入关键字: ")  # 如果没有传递关键字，提示用户输入

    run_file1(keyword)
